home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Text / Edit / Vim / readme3.0 < prev    next >
Text File  |  1994-08-14  |  34KB  |  968 lines

  1. This file contains an overview of changes from Vim version 2.0 to 3.0
  2.  
  3. The changes new in version 2.x are marked with (2.x).
  4. Some changes from Robert Webb are marked with (Webb 2.5).
  5.  
  6. Big improvements
  7. ================
  8.  
  9. Added multiple windows and multiple buffers! See doc/windows.doc for an
  10. overview of the new and changed commands.
  11.  
  12. Added hidden buffers. 'hidden' option can be set to create a hidden buffer
  13. instead of abandoning a buffer. Added ":bnext", ":bprev", ":bNext" and
  14. "brewind" commands to go to other buffer. Added ":buffers" command to show all
  15. buffers. Added ":bmod" command: go to next modified buffer. Added ":bdelete"
  16. command: delete buffer from list. (2.4)
  17.  
  18. Added a lot of commands to manipulate buffers:
  19. - Added commands to open a window for all arguments, all active buffers, all
  20.   buffers: ":all", ":sall", ":unhide", ":sunhide", ":ball", ":sball". (2.5)
  21. - Added ":bunload" command: Unload buffer from memory. The ":bdelete" command
  22.   does the same plus deletes the buffer from the buffer list. (2.5)
  23. - Arguments from command line are always put in buffer list. (2.5)
  24. - Added ":sbuffer", ":sbnext", ":sbNext", ":sbprevious", ":sbmodified",
  25.   ":sbrewind", ":sblast": split window and go to specified buffer. (2.5)
  26. - Added ":wNext" and ":wprevious": write file and go back in argument list.
  27.   (2.5)
  28. - Added ":wqall" and ":xall", write all change buffers and exit. (2.5)
  29.  
  30.  
  31. When all changes have been undone the buffer is not considered to be changed.
  32. Vim can then be exit with ":q" instead of ":q!".
  33.  
  34. Added simple "more" facility to listings. Can be switched on/off with the
  35. 'more' option.
  36.  
  37. Added Webb's code for command line completion, with "#ifdef WEBB_COMPLETE".
  38. (Webb 2.5)
  39.  
  40.  
  41. Changes incompatible with previous versions
  42. ===========================================
  43.  
  44. Command lines starting with '#' are no longer considered to be comments. '#'
  45. is a synonym for :number.
  46.  
  47. Embedded newline characters in command lines are considered to be the end of a
  48. command line. To use newline characters in a command, precede it with CTRL-V
  49. (you have to type CTRL-V two times to get one).
  50.  
  51. The ":files" command is now the same as the ":buffers" command. The file list
  52. and the buffer list have been integrated into one list. The buffer number and
  53. the file number are equal and will not change during an editing session. (2.5)
  54.  
  55. ":buffer" does not accept a file name but a buffer number. Use ":set hid" and
  56. ":e file". (2.5)
  57.  
  58. Made 'laststatus' a numeric option. It says when to use a status line for last
  59. window: 0 is never, 1 if more than one window, 2 is always. (2.5)
  60.  
  61. Replaced CTRL-P in insert mode by CTRL-B (for Backwards). CTRL-P can now be
  62. used for keyword completion. (2.5)
  63.  
  64. The search pattern for the :tag command does not replace the search pattern
  65. that is remembered for the next search command. (Webb 2.5)
  66.  
  67. Use CTRL-X instead of CTRL-S (subtract). Do not switch off xon/xoff in unix.c.
  68. Fixes problems with CTRL-S on some terminals. (2.4)
  69.  
  70. Using >> will not shift lines that start with '#' when 'si' is set. (Webb 2.5)
  71.  
  72. "\?" in expressions (match exactly one time) replaced by "\=", makes "?\?\?"
  73. work.
  74.  
  75. The commands "*" and "#" only search for whole words, using "\<ident\>". (Webb
  76. 2.5)
  77.  
  78. When doing a ":ta" command after CTRL-T, the tag stack is truncated, rather
  79. than keeping old tags at the top. Now repeating CTRL-T will get you back to
  80. the first ":ta" and stop there. (Webb 2.5)
  81.  
  82. Made argument list global, not local to each window. ":quit" works when there
  83. are more files to edit, except when there is only one window. (2.4)
  84.  
  85. The ".vim" file is not used for recovery with the "-r" argument. Use
  86. "Vim -s file.vim file" instead.
  87.  
  88. First page of swap file has changed, cannot recover files from older versions.
  89. The swap file can now be recognized by its start: "b0VIM 3.0", where 3.0 is
  90. the version number. (3.0)
  91.  
  92.  
  93. New commands and functionality
  94. ==============================
  95.  
  96. Added insert-mode keyword completion commands CTRL-P and CTRL-N inside #ifdef
  97. WEBB_KEYWORD_COMPL. (Webb 2.5)
  98.  
  99. Updated error messages for keyword completion in insert mode. (2.7)
  100.  
  101. Added "]f" command: Edit file whose name is under the cursor. Added CTRL-W
  102. CTRL-F and CTRL-W f: split window and edit file whose name is
  103. under the cursor. (Webb 2.5)
  104.  
  105. Changed "]f" into "gf". Mnemonic: goto file. (2.7)
  106.  
  107. Put "]f" and "[f" back in, they do the same as "gf". For people that have the
  108. 'g' key remapped. (2.9)
  109.  
  110. Added CTRL-W CTRL-R, CTRL-W r, CTRL-W R: rotate windows upwards/downwards
  111. (2.5)
  112.  
  113. Added CTRL-W CTRL-X and CTRL-W x: exchange current window with next one. (Webb
  114. 2.5)
  115.  
  116. Added window title for xterm.
  117.  
  118. Added termcap options 't_so' (standout) and 't_se' (standout end). Use 't_so'
  119. and 't_se' if inversion is not possible and for highlighting directories.
  120. At some places standout mode is used instead of inversion. (Webb 2.5)
  121.  
  122. Do wait_return() message and the message used when asked for 'y' or 'n' is now
  123. in standout mode. (Webb 2.5)
  124.  
  125. Added termcap option 't_ms' (save to move cursor in reverse mode). Makes
  126. inversion work on some terminals.
  127.  
  128. Added ":mode" command. Under Amiga and Unix this only re-sets the screen
  129. size. With MSDOS it is possible to switch screen mode.
  130.  
  131. Now also "%<", "#31<", alternate file name without extension.
  132.  
  133. Added ':' register. Contains last command line. "@:" repeats last command
  134. line.
  135.  
  136. Added ":exit" as synonym for ":xit". More logical, isn't it?
  137.  
  138. Added ":swapname". Show swap file name for current buffer.
  139.  
  140. ":args" can have arguments for redefining the argument list, just like
  141. ":next". (2.5)
  142.  
  143. When the command for the tag is a search and it fails, try searching for the
  144. tag itself with pattern "^tag(" and "^[#a-zA-Z_].*tag(". (Webb 2.5)
  145.  
  146. "%" will now go to matching comment delimiters (/ *, * /) and find matches for
  147. the preprocessing lines #ifdef, #else, #elif and #endif. (Webb 2.5)
  148.  
  149. Using '%' on #if/#else/#endif makes the movement linewise. (2.7)
  150.  
  151. "[p", "[P", "]p" and "]P" work like "p" and "P" but adjust the indent of the
  152. putted lines to match the context. (Webb 2.5)
  153.  
  154. Changed put indented: "[p" and "]p" is "]p" (put forward), "[P" and "]P" is
  155. "[p" (put backward). (2.7)
  156.  
  157. "[(" and "[{" may be used to go to the (count'th) last unclosed ( or {.
  158. "])" and "]}" may be used to jump to the (count'th) next unopen) or }. Can be
  159. used to jump to the start/end of the innermost c-code block (Webb 2.5)
  160.  
  161. Added count to ":", "count:" translates into ":.,.+(count - 1)". (Webb 2.5)
  162.  
  163. Added ":sleep" command. (2.4)
  164.  
  165. "g" is to be used for a new series of commands. First one: "gs" sleeps for a
  166. moment (Mnemonic: Go to Sleep). Give count for that many seconds. Can be
  167. interrupted with CTRL-C. (2.5)
  168.  
  169. Added ":last" and ":slast", go to last argument. (2.5)
  170. Added ":argument [N]" and ":sargument [N]", go to Nth argument. (2.5)
  171. Added ":blast" and ":sblast", go to last buffer. (2.5)
  172.  
  173. Added "-o[N]" command line argument: Open N windows on startup. (2.5)
  174.  
  175. Added ":only", CTRL-W CTRL-O, CTRL-O o: Close all but current window. (2.5)
  176.  
  177. Added default digraph: <space> <char> is meta-char. (2.4)
  178.  
  179. Digraphs with CTRL-H do not make meta characters. Use CTRL-K <space>
  180. <char>. Fixes problem with abbreviations when 'digraph' set. (2.5)
  181.  
  182. Don't allow digraphs with ESC. Hitting ESC in digraph exits insert mode. (2.5)
  183.  
  184. Added ":snext", ":sNext", ":sprev" and ":srewind" commands, split window and
  185. go to next/previous file in argument list. (2.4)
  186.  
  187. Added CTRL-W CTRL-P and CTRL-W p, jump to previous window. (2.4)
  188.  
  189. Added "zz", "zt" and "zb", same as "z.", "zCR" and "z-" but without moving the
  190. cursor to the start of the line. (2.4)
  191.  
  192. ":bdelete" and ":bunload" accept a range of buffers and a list of buffer
  193. numbers. (2.7)
  194.  
  195.  
  196. Improvements
  197. ============
  198.  
  199. Cursor up/down in insert mode keep the same column. Also for "CTRL-O j" and
  200. the like.
  201.  
  202. Added column number to :file.
  203.  
  204. Improved listing of ":set" command. The columns are now sorted top to bottom.
  205. Long string options are listed at the end (idea comes from nvi).
  206.  
  207. Renamed directory "macros" to "tools". Moved doc/vim132 to tools/vim132.
  208.  
  209. "ref" program added for "K" command (in the tools directory. Does simple
  210. spelling check.
  211.  
  212. Vim arguments "-c command" and "+command" are now options that can be given
  213. anywhere on the command line before the file names. Makes it possible to do
  214. "Vim "+set ic" -t FuncTion".
  215.  
  216. Improved Usage message.
  217.  
  218. Added check for negative line numbers in colon commands.
  219.  
  220. Removed 'n' offset to search patterns. Avoiding pcmark set is now down with
  221. tag_busy flag.
  222.  
  223. Improved error messages for file access.
  224.  
  225. ":args" does not call wait_return() when message is short.
  226.  
  227. When doing :paste twice the option values are saved only once.
  228.  
  229. Accept '\n' to separate Ex commands, just like '|'.
  230.  
  231. With search also accept 'b' for begin, like 's' for start.
  232. When 'e' used the operator is inclusive. 
  233.  
  234. Visual shift accepts a count for number of indents.
  235.  
  236. No "hit return to continue" while filtering and only once when reading/writing
  237. files.
  238.  
  239. For Amiga and MSDOS lines longer than 32000 characters are split when reading.
  240. Used to give problems (out of memory errors).
  241.  
  242. When ':' entered after "hit return to continue" don't redraw the screen.
  243.  
  244. In regexp: made '$' in front of '\|' also end-of-line.
  245.  
  246. Added "+command" argument to ":next", ":prev", ":rewind" and ":Next".
  247.  
  248. Give better error message when "/" did not found pattern and 'wrapscan' off.
  249.  
  250. Added message "search hit BOTTOM, continuing at TOP" when search wraps. Don't
  251. display this message when 'terse' option is on.
  252.  
  253. Made ":&" work like ":s//~/".
  254.  
  255. Consider mapped characters for terminal codes, makes "map <key-code1>
  256. <key-code2>" work.
  257.  
  258. Remember two search patterns: One for substitute and one for the rest. This is
  259. how vi works. ":global" command sets both patterns.
  260.  
  261. Error messages during global command are listed below each other. (2.4)
  262.  
  263. Don't redisplay the "INSERT" message when getting out of insert mode.
  264.  
  265. With escape in insert mode and auto-indent the cursor is put in the correct
  266. column right away instead of after one second.
  267.  
  268. Added "Permission denied" message to readfile().
  269.  
  270. Added preserve command. Writes all text into the swap file.
  271.  
  272. Named marks are saved for undo, restored for redo.
  273.  
  274. Reduced terminal I/O by using screen_char() instead of outchar() for messages.
  275.  
  276. Added count to quickfix commands :cn and :cp. :cl and :cf can be interrupted
  277. by CTRL-C.
  278.  
  279. For MSDOS ignore CTRL-Z at end of file in textmode.
  280.  
  281. No mapping for CR when waiting for "hit return to continue".
  282.  
  283. Use 'ignorecase' option when searching for tag in tag file.
  284.  
  285. When count given for undo or redo, redraw screen only once.
  286.  
  287. Clear message on command line when scrolling, otherwise it will stay there
  288. until the screen is cleared. (2.5)
  289.  
  290. Marks are remembered for buffers that are unloaded. (2.5)
  291.  
  292. Implemented scroll regions, using "CS" termcap entry. Also works for pc
  293. console. Does not work for Amiga. (2.5)
  294.  
  295. Made searches starting with "\<" quite a bit faster, by using regmust in
  296. regexp.c. (2.5)
  297.  
  298. Don't output an extra line when reading a file and screen has been scrolled up
  299. (e.g. after CTRL-D). (2.5)
  300.  
  301. After "dG" "''" still works (when previous context mark is deleted, use
  302. previous one). (2.5)
  303.  
  304. A count can be given after an ex command for all commands that do not use a
  305. line number or range, e.g. ":sleep 2" is the same as :2sleep". Do not accept a
  306. count where a file name is expected, because file names can be numbers. For
  307. example ":next 4". (2.5)
  308.  
  309. "~/" is expanded to $HOME, wherever an environment variable is allowed. (2.5)
  310.  
  311. When the start of a filename matches $HOME, it is replaced with "~/" for the
  312. window title, status line, message from ":read", ":write", CTRL-G, ":file",
  313. ":marks" and ":jumps". Also for string options shown with ":set" that can be a
  314. file name. (2.5)
  315.  
  316. Previous context mark for each window instead of for each buffer. (Webb 2.5)
  317.  
  318. Set previous context mark only if line number changed. (Webb 2.5)
  319.  
  320. Made tagstack local to each window. (Webb 2.5)
  321.  
  322. In the status line of a modified buffer "[+]" is shown. (Webb 2.5)
  323.  
  324. Remember cursor position in tag stack for :tag command without argument. (Webb
  325. 2.5)
  326.  
  327. When backwards range given for ":" command, ask for confirmation to swap it
  328. and continue. (Webb 2.5)
  329.  
  330. After CTRL-T set curswant, so we stay in that column when moving up/down.
  331. (Webb 2.5)
  332.  
  333. With :s/../../c show ruler when waiting for reply. (Webb 2.5)
  334.  
  335. Give file name message for commands ":bnext", ":bmod" and the like. (2.5)
  336.  
  337. Made index in argument list local to each window. (2.5)
  338.  
  339. Show visual selection only in current window. (2.5)
  340.  
  341. When a window is split, redraw both windows with cursor in middle. (2.4)
  342.  
  343. Included code to save the xterm title. Need to define USE_X11, because
  344. specific include file and library are needed. (2.4)
  345.  
  346. Made "search hit BOT.." messages redisplay after screen redraw. (2.4)
  347.  
  348. Don't do textwidth formatting when in replace mode and replacing an existing
  349. character. (2.4)
  350.  
  351. Print message about the file when starting to edit an existing buffer. Fixes
  352. not giving a message when doing ":n" to file being edited in other window.
  353. (2.4)
  354.  
  355. When lines are deleted/inserted, adjust topline and cursor position of other
  356. windows on same buffer to stay in the same place (if possible). (2.4)
  357.  
  358. If CTRL-W CTRL-] is done on a tag that does not exist, the window is not
  359. split. (2.4)
  360.  
  361. Moved column number in CTRL-G to the end and adjusted the number. (2.4)
  362.  
  363. Added "-- more --" message to listing of mappings. (2.4)
  364.  
  365. Accept 'q' with "-- more --" message. Interrupts current listing. (2.4)
  366.  
  367. When end of Visual area is on an empty line, minlc is FALSE, makes
  368. "d}P" and "v}dP" do the same. (2.4)
  369.  
  370. When the commands '*' and '#' do not find an identifier after the cursor, a
  371. search is done for a non-identifier string. (2.5)
  372.  
  373. Made the ":buffers" listing nicer by putting the "line" string in column 40.
  374. (2.7)
  375.  
  376. Updated error messages for keyword completion. (2.8)
  377.  
  378. If 'winheight' set spread extra lines over other windows. (2.8)
  379.  
  380. When 'updatecount' changed from zero to non-zero, create swap file for all
  381. loaded buffers. (2.8)
  382.  
  383. When command line completion found more than one match, beep. (3.0)
  384.  
  385. Changed "still more files to edit" into "6 more files to edit". (2.9)
  386.  
  387. When :bdel is used with a range and errors occur, still delete the other
  388. buffers. (3.0)
  389.  
  390. Added version string to .swp file. (3.0)
  391.  
  392. In MSDOS version: After calling a shell, check screen size. Now it is possible
  393. to set the screen size with a command like ":!setmode xxx". (3.0)
  394.  
  395. Don't try to open an X11 display if WINDOWID is not set, makes startup a bit
  396. quicker sometimes. (3.0)
  397.  
  398.  
  399. New and changed options
  400. =======================
  401.  
  402. Default 'updatetime' is 10000, 10sec. Default 'updatecount' is 1000. This
  403. feels more comfortable. But if you keep on typing, more will be lost when
  404. crashing.
  405.  
  406. Changed default for 'updatecount' to 200 (1000 was too much). Default for
  407. 'updatetime' is now four seconds (more than three seconds means that your
  408. attention is drawn away). (2.7)
  409.  
  410. Added 'cmdheight' option ('ch'), number of lines for command line. Set it to 2
  411. or 3 if you are annoyed by "hit return to continue" questions for long
  412. messages.
  413.  
  414. Added 'winheight' option ('wh'), number of lines for active window. Set it to
  415. 999 to make the current window always fill the screen.
  416.  
  417. Made 'winheight' option a "minimal window height" option, only set height if
  418. current height is smaller. (2.4)
  419.  
  420. Added 'laststatus' option ('ls'). When set to 2 last window always has a
  421. status line. When set to 1 (which is the default) the last window only has a
  422. status line if there are two or more windows. When set to 0 there is never a
  423. status line. The screen looks nicer with a status line if you have several
  424. windows, but takes another screen line.
  425.  
  426. Added optional '>' to 'directory' and 'backupdir' option, e.g. ">/tmp". When
  427. used, 'directory' option is always used for swap file. When not used
  428. 'directory' is only used when swap file cannot be created in current
  429. directory. The default is that the swap file will be in the current directory
  430. when possible, in 'directory' otherwise. 'directory' defaults to "/tmp" for
  431. unix, "t:" for Amiga and "c:\tmp" for MSDOS. The 'backupdir' option works in
  432. the same way, but is currently only available for Unix.
  433.  
  434. Added 'nobuf' option ('nb'). When set one character is send to the terminal
  435. at a time (does not work for MSDOS). For debugging purposes.
  436.  
  437. Added 'shellpipe' option ('sp'). String to use for the make command to store
  438. the error messages. For Amiga and MSDOS it defaults to ">". For Unix it
  439. defaults to "| tee". For "csh", "tcsh" and "zsh" it is changed into "|& tee".
  440. For "sh", "ksh" and "bash" it is changed into "2>&1| tee". Fixes problem with
  441. :make when not using csh. 
  442.  
  443. Added 'maxmem' option ('mm'), maximal Kbyte to use for one buffer.
  444.  
  445. Added 'smarttab' option ('sta'). When set a TAB in front of a line inserts
  446. 'shiftwidth' positions, 'tabstop' in other places. When not set a TAB always
  447. inserts 'tabstop' positions, 'shiftwidth' is only used for ">>" and the like.
  448.  
  449. Added 'maxmemtot' option ('mmt'), maximal Kbyte to use for all buffers.
  450.  
  451. Added 'ttyfast' option ('tf'). When set the terminal is assumed to be fast,
  452. scrolling windows is done by redrawing. When not set windows are scrolled with
  453. insert/delete line commands, causing the windows below it to jump up and down
  454. if threre is no support for a scrolling region.
  455.  
  456. Added 'equalalways' option: When windows split or closed, always do CTRL-W =.
  457. (2.5)
  458.  
  459. Added 'splitbelow': When set new window from split is below current one. (2.5)
  460.  
  461. Added 'tagrelative' option (default ON!). When using tag file in other
  462. directory, file names are relative to the directory where the tag file is.
  463. (Webb 2.5)
  464.  
  465. When setting 'winheight' adjust current window straight away. Check for
  466. negative value. (Webb 2.5)
  467.  
  468. Added 'gdefault' option: make /g default for :s command (default off). (2.4)
  469.  
  470. Added 'title' option (default on). When off, window title is not set. (2.4)
  471.  
  472. Added NOTITLE compile time option for Vera: When defined the title option is
  473. default off. (2.7)
  474.  
  475. Added 'icon' option (default off): when set xterm icon is set to file name.
  476. (2.4)
  477.  
  478. Added 'invertweird' option, for terminals that have a weird inversion method.
  479. Makes the start/end invert code outputted before every character. (2.4)
  480.  
  481. Changed 'invertweird' to 'weirdinvert', because an option starting with 'inv'
  482. is illegal. ":set invertweird" gives an error message. (2.7)
  483.  
  484. Added 'endofline' 'eol' option. If not set and in binary mode, last line will
  485. not get an end of line when writing. (2.4)
  486.  
  487. Added 'bswrap' option: Backspace (CTRL-H) and space wrap to previous/next line
  488. in command mode. Default is ON! Should have been added long ago! (2.4)
  489.  
  490. When 'bswrap' option set, left/right cursor keys in insert mode also wrap to
  491. previous/next line. (2.7)
  492.  
  493. Changed toggle 'bswrap' option to number 'whichwrap' option: Add numbers to
  494. allow specific keys to wrap to next/previous line: 1 for backspace, 2 for
  495. space, 4 for 'h' and 'l', 8 for cursor left/right, 16 for cursor left/right in
  496. insert mode. (2.7)
  497.  
  498. Added 'patchmode' option. Oldest version of a file is kept. (2.4)
  499.  
  500. Added 't_csc' termcap option: when set (to anything) the cursor positioning is
  501. done relative to the start of the scrolling region. Otherwise it is relative
  502. to the start of the screen. Unfortunately there is no termcap entry for this.
  503. We are just guessing its value. Currently only MSDOS pcterm is know to need
  504. this set. This fixes doing 'o' not getting the new line in the right place for
  505. MSDOS. (2.7)
  506.  
  507. Added 'highlight' ('hl') option: Can set highlighting mode for various
  508. occasions. 'i' for invert, 'b' for bold, 's' for standout; 'v' = visual mode,
  509. 'd' = directories in CTRL-D listing, 'e' = error messages, 's' = status lines,
  510. 'h' = help file headers, 'r' = return to continue message. They have to be
  511. given in pairs, separated with a comma. For example:
  512. ":set hl=ds,vb,ei,si,hb,ri". Invert is used for occasions that are not
  513. included. Default is "ds,es,hs,rs,vi,si". (2.6)
  514.  
  515. Changed the default highlight mode for directories to bold. (2.7)
  516.  
  517. Added 'n' to 'highlight' option: no highlighting. (2.7)
  518.  
  519. Added 'bold' termcap option as t_tb. (2.6)
  520.  
  521.  
  522. Vi compatibility fixes
  523. ======================
  524.  
  525. ":>", ":<" and ":yank" leave cursor on the last line.
  526.  
  527. Abbreviations recognized like vi, fixes abbreviation of "#i" to "#include".
  528.  
  529. "d]]" also stops at '{'.
  530.  
  531. ']' and '[' are not linewise.
  532.  
  533. "z." and "z-" move cursor to start of line. "zz" does the same as "z.".
  534.  
  535. ":>>" shifts two indents, ":>>>" three, etc.
  536.  
  537. When no file name yet and giving a ":read fname" command, use that file name.
  538. (2.4) When no file name yet and giving a ":write fname" command, use that file
  539. name. (2.5)
  540.  
  541. ":3,3join" does nothing, fixes "g/^$/.,/./-j" to delete only multiple empty
  542. lines. (2.5)
  543.  
  544. ":wnext" does not go to next file in argument list if write fails. (2.5)
  545.  
  546. CTRL-W CURSOR-UP and CTRL-W CURSOR-DOWN do the same as CTRL-W k and CTRL-W j.
  547. (2.5)
  548.  
  549. 'smartindent' is improved: When '}' is typed as the first char on a line,
  550. it is moved to line up with the line containing the matching '{' (rather than
  551. just moving back one shift-width no matter what).  If '#' is the first
  552. character typed on a line, then the line is moved all the way to the left.
  553. (Webb 2.5)
  554.  
  555. When 'smartindent' set, '#' removes all indent. Now the existing indent is
  556. remembered for the next line (like with ^ CTRL-D). (2.7)
  557.  
  558. When ESC is used to cancel a command, don't beep. (Webb 2.5)
  559.  
  560. When 'autoindent' set and inserting a CR, delete white space after the cursor.
  561. (Webb 2.5)
  562.  
  563. Don't set curswant when 'h' or 'l' fails. (Webb 2.5)
  564.  
  565. With "70|" command set curswant to 70, also when line is shorter. (Webb 2.5)
  566.  
  567. Fixed "cc" to delete the text linewise, but keep the indent when 'ai' is set.
  568. (2.5)
  569.  
  570. "dTx" and "dFx" do not include cursor position.
  571.  
  572. ":r" without a file name specified reads current file.
  573.  
  574. "ce" when on the end of a word changes until the end of the next word
  575. (but "cw" not).
  576.  
  577. After "dd" put cursor on first non-blank in line.
  578.  
  579. Abbreviations are never recursive, makes ":ab f f-o" work.
  580.  
  581. '#' is not the start of an ex comment but an abbreviation for ":number".
  582.  
  583. Put redo for "p" and "P" back in. It is not completely compatible, because vi
  584. doesn't always redo putting less then a line (but that is considered to be a
  585. bug in vi). (2.5)
  586.  
  587. Adjusted comp_col() for when 'laststatus' is set. Reduces need for "hit return
  588. to continue". (2.5)
  589.  
  590. With ":global" command, don't display "n more lines" messages until the end.
  591. (2.5)
  592.  
  593. Don't reset yank buffer with "." command. Makes dwu"a. work. (2.4)
  594.  
  595. Don't check for abbreviation when a (non-id) character is entered with CTRL-V.
  596. (2.4)
  597.  
  598. With change command put deleted text in "1, even with text within one line.
  599. (2.4)
  600.  
  601. When deleting and a register is specified, also yank into buffer "1. (2.4)
  602.  
  603. ":3|" prints line 3 instead of jumping to it. (2.4)
  604.  
  605. Separated 'wrapmargin' and 'textwidth'. Both can be used, if textwidth is set
  606. it overrides 'wrapmargin'. (2.8)
  607.  
  608.  
  609. Bug fixes
  610. =========
  611.  
  612. Fixed problem in memmove for __sgi.
  613.  
  614. Fixed ":cd" not working for unix.
  615.  
  616. Made incrementing hex numbers with CTRL-A work on systems that don't accept 0x
  617. in scanf for "%x".
  618.  
  619. Reset p_ro in readfile() when starting to edit a new file.
  620.  
  621. inchar() also calls flushbuf when waiting for a second, fixes screen not
  622. updated while waiting for a mapping to be completed.
  623.  
  624. Fixed ":/pat/s/x/X/"; 's' was seen as option to search command.
  625.  
  626. Fixed search patterns where delimiter is inside of a range, e.g. "/[/]".
  627.  
  628. Fixed ignoring 'ignorecase' option for "/[a-z]". Fixed mixing upper/lower case
  629. when 'ignorecase' option not set (just slowed down the searching).
  630.  
  631. Use iswhite() instead of isspace() for "^" and set_indent().
  632.  
  633. Allow pipe in ":r !cmd" and ":w !cmd".
  634. Adjusted check for '|' in ":e +cmd".
  635.  
  636. Fixed insertchar() lookahead for digraph not working when using mapped
  637. characters.
  638.  
  639. Fixed :unab and :unmap for rhs with spaces.
  640.  
  641. Fixed not accepting ambiguous abbreviations.
  642.  
  643. Added check for valid abbreviations.
  644.  
  645. Fixed crash for AmigaDOS 1.3 when giving more than one file on the command
  646. line.
  647.  
  648. Updated isidchar for meta chars.
  649.  
  650. Added setting of Changed flag to :move and :copy.
  651.  
  652. Number after search pattern (e.g. "/pattern/3") is line offset.
  653.  
  654. "cc<ESC>" when 'ai' is set, deletes the indent.
  655.  
  656. Fixed ":s/1/1^M/gc" on "111" and ":s/O/oO/gc" looping.
  657.  
  658. Fixed trailing "\" in substitute string (produced garbage).
  659.  
  660. Fixed yanking control characters (like "^B") with block visual mode.
  661.  
  662. Fixed cursor left of line with "i<ESC>" when 'number' set.
  663.  
  664. MSDOS: isdir() adjusted for trailing backslash, fixes CTRL-D listing.
  665.  
  666. MSDOS: Fixed call to lalloc() in addfile() in msdos.c, could only do 32 files.
  667.  
  668. MSDOS: Fixed setting archive bit in setperm() in msdos.c.
  669.  
  670. MSDOS: Do not eat backslashes in ":next" command.
  671.  
  672. Fixed bug in makescriptname: alloc 1 byte extra.
  673.  
  674. Fixed bug in doaddsub(): Line truncated 30 chars after number.
  675.  
  676. Fixed CTRL-O in insert mode moving cursor when it is after end of line.
  677.  
  678. Vertical movement in insert mode can put cursor one char after the line.
  679.  
  680. Fixed not inverting 0xa0 in visual mode when scrolling. This caused gaps in
  681. the inverted region.
  682.  
  683. Fixed hangup for "?$" command.
  684.  
  685. Fixed keyword macros: ^B must be ^R.
  686.  
  687. ":set all" and ":set termcap" do not look for other arguments.
  688.  
  689. {count}% puts cursor on first non-blank.
  690.  
  691. When ":ta" to tag in same file, start search in line 1. Fixes problem when
  692. 'wrapscan' is not set.
  693.  
  694. Fixed setting of pcmark for "(" and ")".
  695.  
  696. Fixed setting pcmark with :e command.
  697.  
  698. Fixed a crash on Unix when terminal type unknown. (2.5)
  699.  
  700. Fixed 'showmatch', the cursor was off. (2.5)
  701.  
  702. Solved crash when 'lines' was set in .exrc. (2.5)
  703.  
  704. Fixed memory leak for mf_xfname. (2.5)
  705.  
  706. Fixed a problem in the Unix part for making backup files. Strange that this
  707. did not cause the compiler to complain. (2.5)
  708.  
  709. Filename expansion is now done into NameBuff instead of IObuff. Fixes bugs
  710. where file name was scrambled or Vim crashed some time after ":next file".
  711. (2.5)
  712.  
  713. Fixed deleting the file message when 't_tp' was set in .vimrc. (2.5)
  714.  
  715. Fixed cursor positioning problem when :s/../../gc made line go past end of
  716. screen. (Webb 2.5)
  717.  
  718. Don't nag about swap file not existing when preserving, except for
  719. ":preserve". (2.5)
  720.  
  721. Fixed loosing changes without warning when 'hidden' option set and re-editing
  722. the same file with a command like ":rewind". (2.5)
  723.  
  724. Clear commandline with ":buffers" command. (2.5)
  725.  
  726. Fixed ":1buf" to go to first buffer instead of second one. (2.5)
  727.  
  728. Fixed default for ":sleep" to be 1 instead of current line number. (2.5)
  729.  
  730. When the 'hidden' option is set don't give error message for changed file on
  731. several commands (:ta). (2.5)
  732.  
  733. Update timestamp in swap file when the file has been written. (2.5)
  734.  
  735. Fixed a problem not updating the time stamp in the swap file when writing
  736. another but the current buffer. (2.7)
  737.  
  738. Fixed bug: not-edited file could be written with ":w". (2.5)
  739.  
  740. Fixed invering Visual part when 'nowrap' set and start is left of window.
  741. (2.4)
  742.  
  743. Fixed problem with join: Deleted leading spaces in the 2nd line when it
  744. shouldn't. (2.4)
  745.  
  746. MSDOS: Trailing CTRL-V in sourced ex file now handled correctly. (2.4)
  747.  
  748. Improved check for readonly files, now "466" is not readonly for others. (2.4)
  749.  
  750. Fixed not inverting one char with "1v" when cursor cannot be made invisible.
  751. (2.4)
  752.  
  753. Stop Visual mode before exiting a window. (2.4)
  754.  
  755. Changed "short_u" to "unsigned" in data block. Fixes problem with lines longer
  756. than 64K characters on Unix. Disadvantage: Need 2 bytes extra for each line.
  757. (2.4)
  758.  
  759. Fixed plines_win() and chartabsize() for lines that are almost 32768
  760. characters. (2.4)
  761.  
  762. Replace MAX_INT by INT_MAX, fixes problem with "$" not getting very far. (2.4)
  763.  
  764. Status lines also redrawn after ":set". Needed when 'ruler' option was
  765. changed. (2.4)
  766.  
  767. Fixed fname freed twice in mf_open(). Fixes crash/hang when editing a file in
  768. a readonly directory. (2.4)
  769.  
  770. Update mf_neg_count in mf_free, fixes "line count wrong in block 1" errors.
  771. (2.4)
  772.  
  773. Fixed bug when in replace mode and beyond the end of the line. (2.4)
  774.  
  775. Fixed a problem for 'r' with a count. Could corrupt the text in the buffer!
  776. (2.4)
  777.  
  778. Scroll options adjusted after CTRL-W =. (2.4)
  779.  
  780. If a tag is found, but the associated file does not exist, do not start
  781. editing an empty file. (2.4)
  782.  
  783. sc_col and ru_col cannot become negative anymore, fixes crash with ":win 1".
  784. (2.4)
  785.  
  786. Check_winsize makes Rows at least 2. (2.4)
  787.  
  788. 'o' and 'O' commands did not update marks for the line just below the new
  789. line. (2.4)
  790.  
  791. Fixed truncated displaying of string options. (2.4)
  792.  
  793. Fixed chmod for help file in makefile.unix. (2.4)
  794.  
  795. Highlighting of directories for CTRL-D on command line no longer highlights
  796. some spaces. (2.4)
  797.  
  798. Moved #endif in param.c from below to above p_wh, fixes problem when
  799. COMPATIBLE is defined. (2.4)
  800.  
  801. Don't reset msg_scrolled in UpdateScreen() when redrawing is disabled. (2.4)
  802.  
  803. Fixed cursor positioning error when cursor is on first char of non-empty
  804. cmdline. (2.4)
  805.  
  806. Fixed problem with redraw when filename completion fails under unix. (2.4)
  807.  
  808. No "hit return to continue" while editing a command line
  809. (e.g. when filename completion fails). (2.4)
  810.  
  811. Fixed bug: Errors while reading file caused big problems. (2.4)
  812.  
  813. Don't try to preserve if there is no swap file. (2.4)
  814.  
  815. Dont' complain about .swp file existing without a file name. (2.4)
  816.  
  817. Fixed endless loop for CTRL-R a in insert mode while register a contained
  818. CTRL-R a. Can now be interrupted with CTRL-C. (2.6)
  819.  
  820. Fixed ":n *" in MSDOS not finding file names with dot. (2.7)
  821.  
  822. Fixed cursor not moved to the right column when scrolling with CTRL-E and
  823. CTRL-Y. (2.7)
  824.  
  825. Fixed bug when using CTRL-A to increment a decimal number after incrementing
  826. an upper case hexadecimal number. (2.7)
  827.  
  828. Only reset the 'notedited' flag when writing to the current file name, not
  829. when writing to another file. (2.7)
  830.  
  831. Fixed screen redraw when window resized, was sometimes done only after
  832. character typed. (2.7)
  833.  
  834. Corrected the order of the options to be alfabetical. (2.7)
  835.  
  836. Fixed using CTRL-D on the command line when there are no matches at all. (2.7)
  837.  
  838. Fixed beeping always when doing CTRL-A on command line. (2.7)
  839.  
  840. Fixed the line number for the alternate file being used for the next command.
  841. e.g. ":w #", ":e file" when # is file. (2.7)
  842.  
  843. Moved the fileinfo() in doecmd() to after the place where the cursor is set.
  844. Fixes reporting the wrong cursor position when entering a hidden buffer. (2.7)
  845.  
  846. Fixed compilation problem in unix.c when compiling without WEBB_COMPLETE.
  847. (2.7)
  848.  
  849. When going to previous line with backspace, set curswant. (2.7)
  850.  
  851. Fixed status line showing "[No File] [+] [+]": two plusses. (2.7)
  852.  
  853. The 'changed' flag was not reset for other buffers with :wall. (2.7)
  854.  
  855. Solved bug in 'r': The change was not written to the swap file, which made the
  856. change to be lost sometimes. (2.6)
  857.  
  858. Don't ask for swapping the command line range when in global command. (2.6)
  859.  
  860. Fixed :bdelete, it did't work. :bdelete and :bunload cannot remove a buffer
  861. with an open window, unless it is only the current window. (2.6)
  862.  
  863. Fixed .swp files not deleted when starting to edit a file when the current
  864. buffer is empty and has no name. This also fixes the problem which happens
  865. when starting vim without a file name and the starting to edit a file that
  866. does not exist. (2.6)
  867.  
  868. When error encountered while loading files for "-o" option or ":all", continue
  869. loading the other files. (2.8)
  870.  
  871. If cursor is in column 0, always reset horizontal scrolling. Makes tabs
  872. completely visible. (2.8)
  873.  
  874. Fixed problem in mf_release_all, empty used list not detected properly. (2.8)
  875.  
  876. Fixed crash with command ":@:", repeat last command line. (2.8)
  877.  
  878. Fixed cursor in wrong column when matched string from search was just one line
  879. below the window. (2.8)
  880.  
  881. ":m+1" on the last line in the file silently deleted that line. (3.0)
  882.  
  883. Fixed command line completion of ":s<TAB>". (3.0)
  884.  
  885. The ":srewind" command did not work. (3.0)
  886.  
  887. The ":k" command did not work. (3.0)
  888.  
  889. When making windows for ":all" or "-o" argument, ignore 'splitbelow' option.
  890. (3.0)
  891.  
  892. Fixed a problem when recovering with a swap file that has a page size
  893. different from the default page size. (3.0)
  894.  
  895. The ":bdelete" command did not delete the last buffer. (3.0)
  896.  
  897. When using a range with ":bdelete" that included the current buffer, all the
  898. buffers after it would get loaded before being deleted (3.0)
  899.  
  900. Fixed <SPACE>, wrapping to first char of next line, not setting the wanted
  901. column, causing the next 'k' to go to the wrong column. Same for <BACKSPACE>
  902. on the first column, sticking in the last column. (3.0)
  903.  
  904.  
  905. Internals
  906. =========
  907.  
  908. Renamed u_char to char_u, u_short to short_u. Avoids problems with systems
  909. where these are already defined.
  910.  
  911. Replaced almost all char by char_u, solves some problems with characters above
  912. 127.
  913.  
  914. Removed ptr2nr(). This means that line numbers are adjusted when
  915. inserting/deleting lines. Marks remember line number instead of pointer; undo
  916. uses line count to compute ue_bot.
  917.  
  918. Moved all objects files into "obj" directory.
  919.  
  920. Added "window.c" for multiple window code.
  921.  
  922. Added "memfile.c" and "memline.c" for swap file code.
  923.  
  924. Moved what was remaining of "storage.c" to "undo.c", deleted "storage.c".
  925.  
  926. Deleted autoscript file stuff.
  927.  
  928. Renamed "buffers.c" to "getchar.c".
  929.  
  930. Created "buffer.c". Deleted "script.c".
  931.  
  932. Moved a few functions from "cmdline.c" to "cmdcmds.c" to reduce the size of
  933. "cmdline.c".
  934.  
  935. Integrated file list into buffer list. ":buffers" and ":files" do the same.
  936. Moved functions from "filelist.c" to "buffer.c", deleted "filelist.c". (2.5)
  937.  
  938. Remove mch_start_listing() and mch_stop_listing(), replaced by "--more--".
  939. (2.5)
  940.  
  941.  
  942. Portability
  943. ===========
  944.  
  945. A few patches, the file "winnt.c" and "makefile.nt" for windows NT. (2.4)
  946.  
  947. Added support for Archimedes. It probably doesn't work, because "archie.h" was
  948. missing, and the patches are for Vim version 2.0. Included them anyway, so
  949. people can make patches to make it working. (2.9)
  950.  
  951. Added a few changes for USL in unix.c.
  952.  
  953. Made makefile for unix more easy to change for a specific system.
  954.  
  955. Included small patches for gcc on HPUX 9. (2.4)
  956.  
  957. Set the SIGWINCH signal, when receiving that signal, for all systems. (Webb
  958. 2.5)
  959.  
  960. Changed Visual into VIsual, because it is also used by X11. (2.4)
  961.  
  962. Added some changes for USL and picky gcc. (2.4)
  963.  
  964. Included patches for SCO 3.2. (2.4)
  965.  
  966. Removed the use of the 'obj' directory from makefile.unix. Some versions of
  967. make and cc were having problems with it. (2.7)
  968.